package com.doit.day04

import com.doit.day03.不可变集合.Student

object _03_排序算子 {
  def main(args: Array[String]): Unit = {
    //sorted     如果是可比较的，我直接比较，如果不是可比较的，需要传入一个比较器
    //sortBy     比较对象的某一个或者某几个属性
    //sortWith   自己直接传比较规则
    val stus = List(
      Student(1,"ass",18,"male"),
      Student(2,"dds",38,"male"),
      Student(3,"bzss",38,"female"),
      Student(4,"css",48,"male"),
      Student(5,"zss",48,"female"),
    )

    val students3: List[Student] = stus.sortWith((stu1, stu2) => stu1.name.compare(stu2.name)>0)
//    students3.foreach(println)
    //我想按照年龄的降序排列 如果年龄相同，按照姓名的降序排列
    stus.sortWith((stu1,stu2)=>{
      stu1.age > stu2.age || stu1.name.compare(stu2.name)>0
    }).foreach(println)





    //对他进行排序
    val students: List[Student] = stus.sorted(new Ordering[Student] {
      override def compare(x: Student, y: Student) = -x.age.compare(y.age)
    })

    //本身Student这个类不是一个可比较的，但是它里面的属性
    //按照对象的某一个属性进行排序
    val students1: List[Student] = stus.sortBy(-_.age)
//    println(students1)

    val students2: List[Student] = stus.sortBy(stu => (-stu.age, stu.id))
//    students2.foreach(println)

    //我想按照年龄的降序排列 如果年龄相同，按照姓名的降序排列
//    stus.sortBy(stu=>(-stu.age,stu.name)).foreach(println)





  }
}
